
Conversion/validation tool for Quake1 demo files
================================================

BACKGROUND

Enhanced Win/GL/NehQuake can playback any standard Quake1 demo (protocol 15), but records demo
files in its own native format (protocols 10000-). A demo in this format cannot be played back in
a standard Quake1 engine. Main reasons are enlarged message sizes and support for more models.

ConvDem is a demo conversion tool that tries to fix that. It attempts to convert the demo file
into standard format. The converted demo might still not be playable in a standard engine due to
capacity problems, e.g. the actual map is too large or the demo contents might cause overflow.

ConvDem can limit max message size in any standard or Enhanced Win/GL/NehQuake demo file. This
can be useful if the engine aborts with error "Demo message > MAX_MSGLEN". Conversely, it can
convert only the protocol without limiting message size.

ConvDem can also limit max # entities in any standard or Enhanced Win/GL/NehQuake demo. This
can be useful if the engine aborts with error "CL_EntityNum: x is an invalid number".

ConvDem can convert Nehahra 3.05 or later demos (using Neh1000x protocols) into older Neh15
protocol. Nehahra 3.04 or older demos (using Neh15 protocol) can be converted into standard
protocol 15 format.

ConvDem can convert JoeQuake demos that in rare cases (e.g. Bastion, Castle Necrosis) contain some
Nehahra info into standard format. It can also convert some TomazQuake derived demos.

ConvDem can fix the often invalid view angle during intermission/finale.

ConvDem can also validate any standard or Enhanced Win/GL/NehQuake demo file. Only the demo
structure is validated, not all values in the demo. When validating, no conversion will be made.

==================================================================================================
QUICK START

To convert a demo named "demofile.dem", just enter the command "convdem demofile", and press 'Y'
to start processing. The output is written to a file named "demofile.out", i.e. the original demo
file is NOT changed.

==================================================================================================
COMMAND SYNTAX

The full command syntax is :

convdem [conversion options] [file selection options] demofile [demofile ...]

Conversion options :

-a  : fix intermission/finale view angle (no other change)
-eN : max entities allowed (default N = 600) (no other change)
-f  : force processing even when error found
-k  : do not update date/time stamp in files
-l  : only limit message size in conversion
-m  : monitor log, will force quiet and validate mode
-n  : partial Nehahra conversion, prot 15
-o  : partial Tomaz conversion, prot 15
-p  : only convert protocol; no size limit
-q  : inhibit progress information (to speed process)
-v  : validate only; no conversion

All options in each group should be kept together (no spaces), but the order is not relevant. E.g.
to inhibit progress and also validate, the command could be "convdem -qv demofile".

If validation option is used, no conversion is made. Also, if nothing is done there is no output
file. If message/entity limit or Nehahra/Tomaz options are used, protocol remains unchanged.

The standard demo file extension ".dem" is automatically added to the supplied filename(s) and you
can enter multiple files and wildcards (e.g. abc*).

==================================================================================================
NOTES

ConvDem does NOT change anything in the original demo file; the output is written to a file with
the same name as the demo file but with the extension ".out" instead.

After processing, ConvDem will print out more or less information depending on the selected
options. Default it will print a summary of # processed messages, max message size, # entities,
protocol and whether data was lost in the conversion. When detecting Nehahra/Tomaz contents, it
will be indicated as a prefix, e.g. "Neh10002", "Neh15" or "Tom15". Beware that in monitor mode,
ConvDem may generate a huge amount of printouts. Use standard redirection to capture to file.

When limiting max message sizes, the limit is the standard Q1 format; 8000. When messages are
split, events may be invalidated by the engine due to timing logic.

When limiting entities and not specifying a value, the limit is the old standard; 600. When
specifying a value, it must follow immediately after the option character, e.g. "-e1000". Usage
together with other conversion options could be e.g. "-e1000fk", "-ke1000f" or "-fke1000".

Conversion/validation of Nehahra/JoeQuake protocol 15 demos is made by adding the "-n" option.
The specific Nehahra entity information will then be removed/parsed. This has been verified with
JoeQuake version 0.14b839.

Conversion/validation of TomazQuake demos is made by adding the "-o" option. The specific TQ
entity information will then be removed/parsed. This has been verified with TomazQuake version
1.48.

Using the "-p" option can be useful for playing the demo in another engine that also has high
message size limits (e.g. DarkPlaces).

When fixing the intermission/finale view angle, there is no check for already patched demo.
Patching it again usually doesn't cause any problems, but should be avoided.

ConvDem can always be aborted by hitting Ctrl-Break.

==================================================================================================
FILE SELECTION OPTIONS

There are a lot of file selection options, but maybe the most important one is "-i" that removes
the need for the confirmation for each file. E.g. to inhibit progress, validate and disable
confirmation, the command could be "convdem -qv -i demofile".

More info can be obtained by running ConvDem without any parameters.

==================================================================================================
CHANGES

The changes are as follows :

ConvDem 1.3 (Mar 12 2006)

1. Added possibility to limit # entities in demo via option "-eN". Without the option, there's no
   limit and adding just the option "-e" will set the limit 600. Adding the option with a number
   (e.g. "-e1000") will set that limit.


ConvDem 1.2 (Jan 21 2006)

1. Added support for protocols 10001/10002 (Win/GLQuake 1.30, NehQuake 3.05). Conversion of
   Neh1000x demos into Neh15 is made with the normal conversion. Neh15 can then be converted to
   standard protocol 15 as before using the "-n" option.
2. Improved handling when converting protocol 1000x demos with excessive models (> 256).
3. Fixed bug when using "-a" in a demo where the player isn't entity 1 (e.g. coop/dm). Now it will
   use the entity that is specified in the first setview service found in the demo.


ConvDem 1.1 (Jul 3 2005)

1. Changed so finale screen will also get its view angle fixed when using "-a".


ConvDem 1.0 (Jun 7 2005)

1. First version.

==================================================================================================

